package com.sky.business.sys.param;

import com.sky.common.enums.Arch;
import com.sky.common.enums.RestartPolicy;
import com.sky.common.enums.TaskType;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;

@Data
public class ContainerConfigParam {

    @Schema(description = "id")
    private Integer id;

    /**
     * 版本
     */
    @Schema(description = "版本")
    @NotNull(message = "版本号不能为空")
    private Integer version;

    /**
     * 描述
     */
    @Schema(description = "描述")
    private String description;

    /**
     * 镜像名称
     */
    @Schema(description = "镜像名称")
    @NotBlank(message = "镜像名不能为空")
    private String imageName;

    /**
     * 镜像标签
     */
    @Schema(description = "镜像标签")
    private String imageTag;

    /**
     * 平台  amd64、arm64
     */
    @Schema(description = "平台")
    @NotNull(message = "平台不能为空")
    private Arch imageArch;

    /**
     * 镜像大小,单位MB
     */
    @Schema(description = "镜像大小")
    @NotNull(message = "镜像大小不能为空")
    private Integer imageSize;

    /**
     * 任务类型
     */
    @Schema(description = "任务类型")
    @NotNull(message = "任务类型不能为空")
    private TaskType taskType;

    /**
     * 共享内存,单位MB
     */
    @Schema(description = "共享内存(mb)")
    @NotNull(message = "共享内存不能为空")
    private Integer sharedMemory;

    /**
     * 最大物理内存,单位MB
     */
    @Schema(description = "最大物理内存(mb)")
    @NotNull(message = "最大物理内存不能为空")
    private Integer memory;

    /**
     * 交换内存,单位MB
     */
    @Schema(description = "交换内存(mb)")
    @NotNull(message = "交换内存不能为空")
    private Integer swapMemory;

    /**
     * 内核内存,单位MB
     */
    @Schema(description = "内核内存(mb)")
    @NotNull(message = "内核内存不能为空")
    private Integer kernelMemory;

    /**
     * 是否使用主机网络模式
     */
    @Schema(description = "是否使用主机网络模式")
    @NotNull(message = "是否使用主机网络模式不能为空")
    private Boolean hostMode;

    /**
     * 重启策略
     */
    @Schema(description = "重启策略")
    @NotNull(message = "重启策略不能为空")
    private RestartPolicy restartPolicy;

    /**
     * 运行时
     */
    @Schema(description = "运行时")
    private String runtime;

    /**
     * 是否需要gpu
     */
    @Schema(description = "是否需要GPU")
    @NotNull(message = "是否需要GPU不能为空")
    private Boolean gpuSupport;

}
